微信小程序开发 Note-2
@ 2018年8月15日 20:54:19
小程序的flex布局
小程序建议使用flex布局进行排版(响应式、自适应);
flex是一个盒装弹性布局(盒子中依然含有多个大小不一的盒子);
flex是一个容器,所有子元素都是他的成员;
定义布局:display:flex
flex容器的属性 flex-direction:排列方向,flex-wrap:换行规则 ,justify-content:对齐方式;
flex-direction
row:从左到右 row-reverse:从右到左
column:从上到下 column-reverse:从下到上
1 | .container { |
flex-wrap
nowrap:默认不换行(根据所设置的长度进行压缩
wrap:换行(顶满则换行) wrap-reverse:倒序换行(从下开始换行)
1 | .container { |
justify-content
决定内容的对齐方式;
flex-start:左对齐; flex-end:右对齐; center:居中对齐;
space-between:从左往右,平均分配,用空格分隔成员 ;
space-around:从左往右,平均分配,用空格包围成员;
1 | .container { |
flex成员元素的样式设置
order:成员之间的显示顺序;
flex:成员所占屏幕的比例(会导致width和height失效,并且将一行按比例分配给每个成员);
1 | .a { |
小程序的组件介绍
组件是视图层的基本组成单元,多个组件构成一张试图页面;
组件包含<开始标签></结束标签>;
每个组件都包含一些共有属性;
属性类型
Boolean Number String Array Object EventHandler 事件处理函数名 Any 任意属性
共同属性类型
id(String) class(String) style(String) hidden(Boolean) data-*(Any) bind*/catch*(EventHandler)
视图组件 view
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| hover-class | String | none | 指定按下去的样式类。当 hover-class="none" 时,没有点击态效果 |
| hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态 |
| hover-start-time | Number | 50 | 按住后多久出现点击态,单位毫秒 |
| hover-stay-time | Number | 400 | 手指松开后点击态保留时间,单位毫秒 |
scroll-view 可滚动视图
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| scroll-x | Boolean | false | 允许横向滚动 |
| scroll-y | Boolean | false | 允许纵向滚动 |
| upper-threshold | Number | 50 | 距顶部/左边多远时(px),触发 scrolltoupper 事件 |
| lower-threshold | Number | 50 | 距底部/右边多远时(px),触发 scrolltolower 事件 |
| bindscrolltoupper | EventHandle | 滚动到顶部/左边,会触发 scrolltoupper 事件 | |
| bindscrolltolower | EventHandle | 滚动到底部/右边,会触发 scrolltolower 事件 | |
| scroll-top | Number | 设置竖向滚动条的默认位置 | |
| enable-back-to-top | Boolean | false | iOS点击顶部状态栏/安卓双击标题栏时,滚动条返回顶部,只支持竖向 |
| scroll-with-animation | Boolean | false | 在设置滚动条位置时使用动画过渡 |
| bindscroll | EventHandle | 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} | |
| scroll-into-view | String | 值应为某子元素id(id不能以数字开头).设置哪个方向可滚动,则在哪个方向滚动到该元素 | |
| scroll-left | Number | 设置横向滚动条位置 |
1 | <!scroll.wxml--> |
1 | //scroll.js |
1 | /**index.wxss**/ |
swiper 轮播图
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| indicator-dots | Boolean | false | 是否显示面板指示点 |
| autoplay | Boolean | false | 是否自动切换 |
| interval | Number | 5000 | 自动切换时间间隔 |
| duration | Number | 500 | 滑动动画时长 |
movable-area/movable-view
movable-view 需要在movable-area成员之间;
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| direction | String | none | movable-view的移动方向,属性值有all、vertical、horizontal、none |
| inertia | Boolean | false | movable-view是否带有惯性 |
| out-of-bounds | Boolean | false | 超过可移动区域后,movable-view是否还可以移动 |
| x/y | Number / String | 定义x/y轴方向的偏移,如果x/y的值不在可移动范围内,会自动移动到可移动范围;改变x/y的值会触发动画 | |
| damping | Number | 20 | 阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快 |
| friction | Number | 2 | 摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值 |
| scale | Boolean | false | 是否支持双指缩放,默认缩放手势生效区域是在movable-view内 |
| scale-min/max | Number | 0.5 | 定义缩放倍数最小/大值 |
| bindchange | EventHandle | 拖动过程中触发的事件,event.detail = {x: x, y: y, source: source},其中source表示产生移动的原因,值可为touch(拖动)、touch-out-of-bounds(超出移动范围)、out-of-bounds(超出移动范围后的回弹)、friction(惯性)和空字符串(setData) |
1 | <movable-area class="father-size"> |
1 | Page({ |
icon
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| type | String | icon的类型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear | |
| size | Number | 23 | icon的大小,单位px |
| color | Color | icon的颜色,同css的color |
1 | <icon type='success' size='66'></icon> |
text
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| selectable | Boolean | false | 文本是否可选 |
| space | String | false | 显示连续空格 |
| decode | Boolean | false | 是否解码 |
space 有效值:
| 值 | 说明 |
|---|---|
| ensp | 中文字符空格一半大小 |
| emsp | 中文字符空格大小 |
| nbsp | 根据字体设置的空格大小 |
Tips
- decode可以解析的有
<>&'   - 各个操作系统的空格标准并不一致。
<text/>组件内只支持<text/>嵌套。- 除了文本节点以外的其他节点都无法长按选中。
1 | <view> |
rich-text(富文本)
nodes 属性推荐使用 Array 类型,由于组件会将 String 类型转换为 Array 类型,因而性能会有所下降;
| 属性 | 说明 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| name | 标签名 | String | 是 | 支持部分受信任的HTML节点 |
| attrs | 属性 | Object | 否 | 支持部分受信任的属性,遵循Pascal命名法 |
| children | 子节点列表 | Array | 否 | 结构和nodes一致 |
Bug & Tip
nodes 不推荐使用 String 类型,性能会有所下降;
rich-text 组件内屏蔽所有节点的事件;
attrs 属性不支持 id ,支持 class ;
name 属性大小写不敏感;
如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除;
img 标签仅支持网络图片;
如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 wxss 样式对 rich-text 中的 class 生效;
1 | <!-- String --> |
1 | Page({ |
progress
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| percent | Float | 无 | 百分比0~100 |
| show-info | Boolean | false | 在进度条右侧显示百分比 |
| stroke-width | Number | 6 | 进度条线的宽度,单位px |
| color | Color | #09BB07 | 进度条颜色 (请使用 activeColor) |
| activeColor | Color | 已选择的进度条的颜色 | |
| backgroundColor | Color | 未选择的进度条的颜色 | |
| active | Boolean | false | 进度条从左往右的动画 |
| active-mode | String | backwards | backwards: 动画从头播;forwards:动画从上次结束点接着播 |
1 | <progress percent="{{percentdata}}" show-info='true' stroke-width="20" color="orange" backgroundColor='white' active='true'active-mode='forwards'/> |
1 | Page({ |
@ 2018年8月16日 11:22:28